# ***************************************************************************************
# Default proc options in Page TSconfig for htmlArea RTE and Classic RTE
#
# Sets the proc options for all default configurations.
#
# Assumptions:    - CSS Styled Content is installed.
#        - XHTML output is expected.
#
# For documentation of RTE tranformations, see: http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/5/2/
# For documentation of Page TSConfig configuration of RTE processing, see: http://typo3.org/documentation/document-library/doc_core_api/Page_TSconfig/
# For documentation of the HTMLparser, see: http://typo3.org/documentation/document-library/doc_core_tsref/HTMLparser/
# For documentation of RTE settings in TCA, see: http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/3/#id3665895
# ***************************************************************************************

RTE.default {
	tinymceConfiguration = EXT:tinymce4_rte/Configuration/TinyMce/standard.js
}

## Default RTE processing rules
RTE.default.proc {
	## TRANSFORMATION METHOD
	## We assume that CSS Styled Content is used.
	overruleMode = ts_css

	## DO NOT CONVERT BR TAGS INTO LINEBREAKS
	## br tags in the content are assumed to be intentional.
	dontConvBRtoParagraph = 1

	## PRESERVE DIV SECTIONS - DO NOT REMAP TO P
	preserveDIVSections = 1

	## TAGS ALLOWED OUTSIDE P & DIV
	allowTagsOutside = address, article, aside, blockquote, footer, header, hr, nav, section, img

	## TAGS ALLOWED
	## Added to the default internal list: b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span
	## But, for the sake of clarity, we use a complete list in alphabetic order.
	## center, font, link, meta, o:p, strike, sdfield, style, title and u will be removed on entry (see below).
	## b and i will be remapped on exit (see below).
	## Note that the link accessibility feature of htmlArea RTE does insert img tags.
	allowTags (
		a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer,
		header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small,
		span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
	)

	## TAGS DENIED
	## Make sure we can set rules on any tag listed in allowTags.
	denyTags >

	## ALLOWED P & DIV ATTRIBUTES
	## Attributes class and align are always preserved
	## Align attribute will be unset on entry (see below)
	## This is a list of additional attributes to keep
	keepPDIVattribs = id, title, dir, lang, xml:lang, itemscope, itemtype, itemprop, style, class

	## REMAP BOLD AND ITALIC TO STRONG AND EMPHASIS AND VICE VERSA
	transformBoldAndItalicTags = 1

	## ALLOW TO WRITE ABOUT HTML
	dontUndoHSC_db = 1
	dontHSC_rte = 1

	## CONTENT TO DATABASE
	entryHTMLparser_db = 1
	entryHTMLparser_db {
		## TAGS ALLOWED
		## Always use the same list of allowed tags.
		allowTags < RTE.default.proc.allowTags

		## TAGS DENIED
		## Make sure we can set rules on any tag listed in allowTags.
		denyTags >

		## AVOID CONTENT BEING HSC'ed TWICE
		htmlSpecialChars = 0

		tags {
			b.remap = strong
			i.remap = em

			## CLEAN ATTRIBUTES ON THE FOLLOWING TAGS
			span {
				allowedAttribs = id, title, dir, lang, xml:lang, class, itemscope, itemtype, itemprop, style
				rmTagIfNoAttrib = 1
			}

			p {
				allowedAttribs = id, title, dir, lang, xml:lang, class, itemscope, itemtype, itemprop, style
				fixAttrib.align.unset = 1
			}

			div < .p
			hr.allowedAttribs = class
			b.allowedAttribs < .span.allowedAttribs
			bdo.allowedAttribs < .span.allowedAttribs
			big.allowedAttribs < .span.allowedAttribs
			blockquote.allowedAttribs < .span.allowedAttribs
			cite.allowedAttribs < .span.allowedAttribs
			code.allowedAttribs < .span.allowedAttribs
			del.allowedAttribs < .span.allowedAttribs
			dfn.allowedAttribs < .span.allowedAttribs
			em.allowedAttribs < .span.allowedAttribs
			i.allowedAttribs < .span.allowedAttribs
			ins.allowedAttribs < .span.allowedAttribs
			kbd.allowedAttribs < .span.allowedAttribs
			label.allowedAttribs < .span.allowedAttribs
			q.allowedAttribs < .span.allowedAttribs
			samp.allowedAttribs < .span.allowedAttribs
			small.allowedAttribs < .span.allowedAttribs
			strike.allowedAttribs < .span.allowedAttribs
			strong.allowedAttribs < .span.allowedAttribs
			sub.allowedAttribs < .span.allowedAttribs
			sup.allowedAttribs < .span.allowedAttribs
			tt.allowedAttribs < .span.allowedAttribs
			u.allowedAttribs < .span.allowedAttribs
			var.allowedAttribs < .span.allowedAttribs
		}

		## REMOVE OPEN OFFICE META DATA TAGS, WORD 2003 TAGS, LINK, META, STYLE AND TITLE TAGS, AND DEPRECATED HTML TAGS
		## We use this rule instead of the denyTags rule so that we can protect custom tags without protecting these unwanted tags.
		removeTags = center, font, link, meta, o:p, sdfield, strike, style, title, u

		## PROTECT CUSTOM TAGS
		keepNonMatchedTags = protect
	}

	HTMLparser_db {
		## STRIP ALL ATTRIBUTES FROM THESE TAGS
		## If this list of tags is not set, it will default to: b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike.
		## However, we want to keep xml:lang attribute on most tags and tags from the default list where cleaned on entry.
		noAttrib = br

		## XHTML COMPLIANCE
		## Note that applying xhtml_cleaning on exit would break non-standard attributes of typolink tags
		xhtml_cleaning = 1
	}

	exitHTMLparser_db = 1
	exitHTMLparser_db {
		## KEEP ALL TAGS
		## Unwanted tags were removed on entry.
		## Without this rule, the parser will remove all tags! Presumably, this rule will be more efficient than repeating the allowTags rule
		keepNonMatchedTags = 1

		## AVOID CONTENT BEING HSC'ed TWICE
		htmlSpecialChars = 0
	}
}

## Use same RTE processing rules in FE
RTE.default.FE.proc < RTE.default.proc

## RTE processing rules for bodytext column of tt_content table
## Erase settings from other extensions
RTE.config.tt_content.bodytext >

## Make sure we use ts_css transformation
RTE.config.tt_content.bodytext.proc.overruleMode = ts_css
RTE.config.tt_content.bodytext.types.text.proc.overruleMode = ts_css
RTE.config.tt_content.bodytext.types.textpic.proc.overruleMode = ts_css

# @TODO setting an image configuration doesn't works
RTE.default.buttons.image.options.imageHandler {
#	image {
#		handler = SGalinski\Tinymce4Rte\ImageHandler\EditImageHandler
#		label = LLL:EXT:tinymce4_rte/Resources/Private/Language/locallang_selectimagecontroller.xlf:currentImage
#	}

#	magic {
#		handler = SGalinski\Tinymce4Rte\ImageHandler\AddImageHandler
#		label = LLL:EXT:tinymce4_rte/Resources/Private/Language/locallang_selectimagecontroller.xlf:magicImage
#		displayAfter = image
#		scanAfter = image
#	}

	plain {
		handler = SGalinski\Tinymce4Rte\ImageHandler\AddImageHandler
		label = LLL:EXT:tinymce4_rte/Resources/Private/Language/locallang_selectimagecontroller.xlf:plainImage
		displayAfter = image
		scanAfter = image
	}
}
